package co.edu.udea.impl;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;

import co.edu.udea.dao.HibernateSessionFactory;
import co.edu.udea.dao.RespuestaDao;
import co.edu.udea.model.Respuesta;
import exceptions.ExecptionRTF;

/**
 * 
 * @author Cristina Isabel Mejia Gonzalez
 *
 */
public class RespuestaImp implements RespuestaDao{

	Logger log = Logger.getLogger(this.getClass());
	
	/**
	 * @param codigoRespuesta, Permite consultar una respuesta segun su codigo
	 * @return devuelve la Respuesta asociada al codigo si el proceso fue exitoso
	 */
	@Override
	public Respuesta consultarRespuesta(int codigoRespuesta) throws ExecptionRTF{
		Session sesion = null;
		Transaction tx = null;
		try {
			sesion = HibernateSessionFactory.getInstance().getSession();
			tx = sesion.beginTransaction();
			return (Respuesta) sesion.get(Respuesta.class, codigoRespuesta);
			
		} catch (Exception e) {

			log.error("No se encontro la respuesta al codigo de solicitud: "+ codigoRespuesta, e); 
			throw new ExecptionRTF(e);
		}
	}

	/**
	 * @param respuesta, Medoto que permite guardar una respuesta nueva
	 * @return devuelve la Respuesta asociada al codigo si el proceso fue exitoso
	 */
	@Override
	public Respuesta generarRespuesta(Respuesta respuesta) throws ExecptionRTF{
		Session sesion = null;
		Transaction tx = null;
		try {
			sesion = HibernateSessionFactory.getInstance().getSession();
			tx = sesion.beginTransaction();
			sesion.save(respuesta);
			tx.commit();
			
			return respuesta;
			
		} catch (Exception e) {

			log.error("No se pudo generar la respuesta", e); 
			throw new ExecptionRTF(e);
		}
	}

}
